package com.example.dao;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;

/**
 * 数据库测试运行器
 * 用于快速运行所有数据库相关的测试
 */
@DisplayName("数据库测试运行器")
public class DatabaseTestRunner {

    @Test
    @DisplayName("运行所有数据库连接测试")
    void runAllDatabaseTests() {
        System.out.println("=== 开始运行数据库连接和表结构测试 ===\n");

        // 创建测试实例
        DatabaseConnectionTest dbTest = new DatabaseConnectionTest();

        try {
            // 运行所有测试方法
            dbTest.setUp();

            System.out.println("1. 测试数据库连接...");
            dbTest.testDatabaseConnection();

            System.out.println("\n2. 测试数据库元数据...");
            dbTest.testDatabaseMetadata();

            System.out.println("\n3. 测试User表是否存在...");
            dbTest.testUserTableExists();

            System.out.println("\n4. 测试User表结构...");
            dbTest.testUserTableStructure();

            System.out.println("\n5. 测试User表数据...");
            dbTest.testUserTableHasData();

            System.out.println("\n6. 测试User表索引...");
            dbTest.testUserTableIndexes();

            System.out.println("\n7. 测试数据库连接池...");
            dbTest.testConnectionPooling();

            System.out.println("\n8. 测试数据库事务支持...");
            dbTest.testTransactionSupport();

            System.out.println("\n=== 所有数据库测试完成 ===");
            System.out.println("✓ 数据库连接正常");
            System.out.println("✓ User表结构完整");
            System.out.println("✓ 数据库功能正常");

        } catch (Exception e) {
            System.err.println("\n❌ 数据库测试失败: " + e.getMessage());
            e.printStackTrace();
        } finally {
            try {
                dbTest.tearDown();
            } catch (Exception e) {
                System.err.println("清理测试资源失败: " + e.getMessage());
            }
        }
    }
}